text view: Fix incomplete invalidation
authorMatthias Clasen <mclasen@redhat.com>
Tue, 23 Jul 2019 00:42:25 +0000 (17:42 -0700)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 23 Jul 2019 14:41:43 +0000 (10:41 -0400)
Update the cached text style when a css change affects
content or background. This fixes text views drawing
black-on-dark when switching to the dark theme.

gtk/gtktextview.c

index 4b30b8d653e174694ddf52ddf2067c36e88fc811..db358cef01f0c75ae776f608e30d4be968d92764 100644 (file)
@@ -4573,11 +4573,15 @@ gtk_text_view_style_updated (GtkWidget *widget)
   style_context = gtk_widget_get_style_context (widget);
   change = gtk_style_context_get_change (style_context);
 
-  if ((change == NULL || gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT)) &&
+  if ((change == NULL ||
+       gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT |
+                                             GTK_CSS_AFFECTS_BACKGROUND |
+                                             GTK_CSS_AFFECTS_CONTENT)) &&
       priv->layout && priv->layout->default_style)
     {
       gtk_text_view_set_attributes_from_style (text_view,
                                                priv->layout->default_style);
+      gtk_text_layout_default_style_changed (priv->layout);
 
       ltr_context = gtk_widget_create_pango_context (widget);
       pango_context_set_base_dir (ltr_context, PANGO_DIRECTION_LTR);